﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using CRUD.InterfaceDAO;
using CapaNegocios;
using GestionadorBaseDatos;
using CapaGestion.Spring;

namespace CapaGestion
{
    /// <summary>
    /// Gestiona las reglas de negocio para las formas de pago.
    /// </summary>
    public class GestionarFormaPago : IGestionFormaPago
    {
        private IDaoFormaPago daoFormaPago;
        private IDaoPago daoPago;
        private IList formasDevolver = new ArrayList();

        /// <summary>
        /// Metodo que permite insertar una nueva forma de pago
        /// </summary>
        /// <param name="crearForma">
        /// Este parametro es un objeto de tipo FormaPago. Representa la forma de pago a inserta.
        /// </param>
        public void Insert(FormaPago crearForma)
        {
            daoFormaPago.Insert(crearForma);
        }


       
 
        /// <summary>
        /// Metodo que permite obtener una forma de pago segun su id. 
        /// </summary>
        /// <param name="Id">
        /// Este parametro es un objeto de tipo FormaPago donde el objeto solo tiene lleno el atributo "id"
        /// 
        /// </param>
        /// <returns>
        /// Retorna un objeto de tipo FormaPago
        /// </returns>
        public FormaPago GetById(FormaPago Id)

        {
            
            return (daoFormaPago.GetById(Id));
        }

        /// <summary>
        /// Metodo que permite obtener todas las formas de pago.
        /// </summary>
        /// <returns>
        /// Devuelve una coleccion IList de objetos de tipo FormaPago
        /// </returns>
        public IList GetAll()
        {


            return (daoFormaPago.GetAll());

        }

        /// <summary>Metodo que permite obtener una forma de pago </summary>
        /// <param name="forma"> Este parametro es un objeto de tipo FormaPago y debe tener el atributo Nombre lleno.</param>
        /// <returns>Retorna un objeto de tipo FormaPago</returns>
        public FormaPago GetByNombre(FormaPago forma)
        {
            return daoFormaPago.GetFormaPagoByNombre(forma);
        }

        /// <summary>
        /// Este metodo permite obtener una forma de pago segun su nombre.
        /// </summary>
        /// <param name="forma">
        /// Este parametro es de tipo string, el cual representa el nombre de la forma de pago a buscar.
        /// </param>
        /// <returns>
        /// Retorna un objeto de tipo FormaPago.
        /// </returns>
        public FormaPago GetByNombre(string forma)
        {
            return daoFormaPago.GetFormaPagoByNombre(forma);
        }


        
        public IList insertarFormasPago(IList agregarDato)
        {
          /*  IGestionPago gestionPago = AdministradorGestion.getGestionarPago();
            int numeroCampos = agregarDato.Count;
            for (int i = 0; i < numeroCampos; i++)
            {
                FormaPago agregarForma = (FormaPago)agregarDato[i];
                agregarForma.PagosAsociados = gestionPago.GetByPago(agregarForma.IdFormaPago);
                formasDevolver.Add(agregarForma);
            }*/
            return formasDevolver;
        }

        public FormaPago insertarPago(FormaPago agregarDato)
        {
           /* IGestionPago gestionPago = AdministradorGestion.getGestionarPago();
            agregarDato.PagosAsociados = gestionPago.GetByPago(agregarDato.IdFormaPago);*/
            return agregarDato;

        }
        
    }
}
